package be.jsams;

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTabbedPane;

public class Main {

	private JFrame frame = new JFrame();

	private JTabbedPane tabbedPane = new JTabbedPane();

	private JButton addTabButton = new JButton("Add Tab");

	private ImageIcon closeXIcon = new ImageIcon("C:/CloseX.gif");

	private Dimension closeButtonSize;

	private int tabCounter = 0;

	public Main() {
		addTabButton.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				add();
			}
		});
		closeButtonSize = new Dimension(closeXIcon.getIconWidth() + 2,
				closeXIcon.getIconHeight() + 2);

		frame.add(tabbedPane, BorderLayout.CENTER);
		frame.add(addTabButton, BorderLayout.SOUTH);

		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

		frame.pack();
		frame.setMinimumSize(new Dimension(300, 300));
		frame.setVisible(true);

	}

	public void add() {
		final JPanel content = new JPanel();
		JPanel tab = new JPanel();
		tab.setOpaque(false);

		JLabel tabLabel = new JLabel("Tab " + (++tabCounter));

		JButton tabCloseButton = new JButton(closeXIcon);
		tabCloseButton.setPreferredSize(closeButtonSize);
		tabCloseButton.addActionListener(new ActionListener() {

			public void actionPerformed(ActionEvent e) {
				int closeTabNumber = tabbedPane.indexOfComponent(content);
				tabbedPane.removeTabAt(closeTabNumber);
			}
		});

		tab.add(tabLabel, BorderLayout.WEST);
		tab.add(tabCloseButton, BorderLayout.EAST);

		tabbedPane.addTab(null, content);
		tabbedPane.setTabComponentAt(tabbedPane.getTabCount() - 1, tab);
	}

	public static void main(String[] args) {
		new Main();
	}
}
